package com.mrwind.pgsql.orm.mapper;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository()
public interface IBaseDao {
	
	/**
	 * 根据指定select语句、参数，查询单一对象
	 * @param xmlSqlId mapper.xml配置文件中select语句id
	 * @param param map参数或者包含查询条件的实体参数
	 * @return mapper.xml配置文件中指定的返回类型
	 */
	public <T> T qryOneByXML(String xmlSqlId, Object param);
	
	/**
	 * 根据指定select语句、参数，查询对象列表
	 * @param xmlSqlId mapper.xml配置文件中select语句id
	 * @param param map参数或者包含查询条件的实体参数
	 * @return mapper.xml配置文件中指定的返回类型
	 */
	public <T> List<T> qryEntityListByXML(String xmlSqlId, Object param);
	
	/**
	 * 根据指定select语句、参数，查询map列表
	 * @param xmlSqlId mapper.xml配置文件中select语句id
	 * @param param map参数或者包含查询条件的实体参数
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String,Object>> qryMapListByXML(String xmlSqlId, Object param);
	
	/**
	 * 执行自定义语句
	 * @param sql 自定义SQL语句
	 * @return 返回 List<Map<String,Object>>
	 */
	public List<Map<String,Object>> qryMapListBySql(@Param("sql") String sql);
	
}
